<?php
App::uses('AppController', 'Controller');
/**
 * Alunos Controller
 *
 * @property Aluno $Aluno
 * @property PaginatorComponent $Paginator
 * @property SessionComponent $Session
 */
class AlunosController extends AppController {

/**
 * Components
 *
 * @var array
 */
	public $components = array('Paginator', 'Session', 'RequestHandler', 'Utilities');
        public $helpers = array('Formatter');
        public $uses = array('Aluno', 'Pais', 'Estado', 'Cidade', 'Pessoa');

/**
 * index method
 *
 * @return void
 */
	public function index() {
		$this->Aluno->recursive = 0;
		$this->set('alunos', $this->Paginator->paginate('Aluno', array('Aluno.ativo' => 'S')));
	}

/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function view($id = null) {
		if (!$this->Aluno->exists($id)) {
			throw new NotFoundException(__('Aluno inválido'));
		}
		$options = array('conditions' => array('Aluno.' . $this->Aluno->primaryKey => $id),
                                 'contain' => array('Pessoa' => array('Cidade' => array('Estado' => array('Pais')))));
                
                $this->Aluno->recursive = -1;
		$this->set('aluno', $this->Aluno->find('first', $options));
	}

/**
 * add method
 *
 * @return void
 */
	public function add($id = null) {
		if ($this->request->is('post')) {
                    
                        $this->Utilities->formatarCPF($this->request->data['Pessoa']['cpf']);
                        
                        if(!empty($this->request->data['Pessoa']['cnh_validade'])){
                            $this->Utilities->formatarData($this->request->data['Pessoa']['cnh_validade']);
                        }
                        
                        if(!empty($this->request->data['Pessoa']['nascimento'])){
                            $this->Utilities->formatarData($this->request->data['Pessoa']['nascimento']);
                        }
                        
                        if($this->Utilities->validarCPF($this->request->data['Pessoa']['cpf'])){
                            $dataAluno = $this->request->data['Aluno'];
                            unset($this->request->data['Aluno']);
                            $this->request->data['Aluno'][0] = $dataAluno;
                        
                            if ($this->Pessoa->saveAll($this->request->data)) {
				$this->Session->setFlash(__('Aluno salvo com sucesso.'));
				return $this->redirect(array('action' => 'index'));
                            } else {
				$this->Session->setFlash(__('O aluno não pôde ser salvo. Por favor, tente novamente.'));
                            }
                        }else{
                           $this->Session->setFlash(__('CPF inválido.')); 
                        }
		}
                
                if($id != null){
                    $this->request->data = $this->Pessoa->find('first', array('conditions' => array('Pessoa.id' => $id)));
                }
                
                $paises = $this->Pais->find('list', array('order' => array('nome')));
                $this->Utilities->adicionarItemChaveVazia($paises, '--Selecione--');
                $this->request->data['Controle']['pais_id'] = 1;
                
                $estados = $this->Estado->find('list', array('conditions' => array('pais_id' => 1)));
                $this->Utilities->adicionarItemChaveVazia($estados, '--Selecione--');
                $this->request->data['Controle']['estado_id'] = 5;
                
		$cidades = $this->Cidade->find('list', array('conditions' => array('estado_id' => 5)));
                $this->Utilities->adicionarItemChaveVazia($cidades, '--Selecione--');
                $this->request->data['Pessoa']['cidade_id'] = 981;
                
		$this->set(compact('paises', 'estados', 'cidades'));
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function edit($id = null) {
		if (!$this->Aluno->exists($id)) {
			throw new NotFoundException(__('Aluno inválido'));
		}
		if ($this->request->is(array('post', 'put'))) {
                    
                        $this->Utilities->formatarCPF($this->request->data['Pessoa']['cpf']);
                        
                        if(!empty($this->request->data['Pessoa']['cnh_validade'])){
                            $this->Utilities->formatarData($this->request->data['Pessoa']['cnh_validade']);
                        }
                        
                        if(!empty($this->request->data['Pessoa']['nascimento'])){
                            $this->Utilities->formatarData($this->request->data['Pessoa']['nascimento']);
                        }
                    
                        if($this->Utilities->validarCPF($this->request->data['Pessoa']['cpf'])){
                            $dataAluno = $this->request->data['Aluno'];
                            unset($this->request->data['Aluno']);
                            $this->request->data['Aluno'][0] = $dataAluno;
                        
                            if ($this->Pessoa->saveAll($this->request->data)) {
				$this->Session->setFlash(__('Aluno alterado com sucesso.'));
				return $this->redirect(array('action' => 'index'));
                            } else {
				$this->Session->setFlash(__('O aluno não pôde ser alterado. Por favor, tente novamente.'));
                            }
                        } else{
                            $this->Session->setFlash(__('CPF inválido.'));
                        }
                        
		} else {
                        $this->request->data = $this->Aluno->find('first', array('conditions' => array('Aluno.' . $this->Aluno->primaryKey => $id)));
		}
                
                $local = $this->Cidade->find('first', array('contain' => array('Estado'),
                                                            'conditions' => array('Cidade.id' => $this->request->data['Pessoa']['cidade_id'])));
                
                $paises = $this->Pais->find('list', array('order' => array('nome')));
                $this->Utilities->adicionarItemChaveVazia($paises, '--Selecione--');
                $this->request->data['Controle']['pais_id'] = $local['Estado']['pais_id'];
                
                $estados = $this->Estado->find('list', array('conditions' => array('pais_id' => $local['Estado']['pais_id'])));
                $this->Utilities->adicionarItemChaveVazia($estados, '--Selecione--');
                $this->request->data['Controle']['estado_id'] = $local['Cidade']['estado_id'];
                
		$cidades = $this->Cidade->find('list', array('conditions' => array('estado_id' => $local['Cidade']['estado_id'])));
                $this->Utilities->adicionarItemChaveVazia($cidades, '--Selecione--');
                
                if (!empty($this->request->data['Pessoa']['cnh_validade'])) {
                    $this->Utilities->formatarData($this->request->data['Pessoa']['cnh_validade'], false);
                }

                if (!empty($this->request->data['Pessoa']['nascimento'])) {
                    $this->Utilities->formatarData($this->request->data['Pessoa']['nascimento'], false);
                }
                
		$this->set(compact('paises', 'estados', 'cidades'));
	}

/**
 * delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function delete($id = null) {
		$this->Aluno->id = $id;
		if (!$this->Aluno->exists()) {
			throw new NotFoundException(__('Aluno inválido'));
		}
		$this->request->allowMethod('post', 'delete');
                
                $this->request->data['Aluno']['id'] = $id;
                $this->request->data['Aluno']['ativo'] = 'N';
                
		if ($this->Aluno->save($this->request->data)) {
			$this->Session->setFlash(__('Aluno excluído com sucesso.'));
		} else {
			$this->Session->setFlash(__('O aluno não pôde ser inativado. Por favor, tente novamente.'));
		}
		return $this->redirect(array('action' => 'index'));
	}
        
        public function find(){
            if ($this->request->is(array('post', 'put'))) {
                
                $this->Utilities->formatarCPF($this->request->data['Pessoa']['cpf']);
                
                if($this->Utilities->validarCPF($this->request->data['Pessoa']['cpf'])){
                
                    $pessoa = $this->Aluno->Pessoa->find('first', array('conditions' => array('Pessoa.cpf' => $this->request->data['Pessoa']['cpf'])));
                
                    if(empty($pessoa['Aluno'])){
                        return $this->redirect(array('action' => 'add', $pessoa['Pessoa']['id']));
                    }
                
                    $this->Aluno->recursive = 0;
                    $this->set('alunos', $this->Paginator->paginate('Aluno', array('Aluno.id' => $pessoa['Aluno'][0]['id'])));
                            
                } else{
                    $this->Session->setFlash(__('CPF inválido.'));
                }
            }
        }
}
